home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 501-525 / disk_509 / multi_player / sources / normalreplay_startrek.s < prev    next >
Text File  |  1992-05-06  |  9KB  |  528 lines

  1. ; STARTREKKER 1.2 NORMAL REPLAYROUTINE
  2.  
  3. ; call mt_init, then mt_music each frame, call mt_end to stop
  4.  
  5. ; ###################################################################
  6. ;
  7. ; !!!! MODIFICATION: cette petite macro en bas
  8. ; plus tout les chgangement de lea mt_data,a0 en move.l _adr_data,a0
  9. ;
  10. ; ###################################################################
  11.     
  12. ; !!!!
  13.     XDEF    _mt_init,_mt_music,_mt_end
  14.     XREF    _adr_data
  15. ; !!!!
  16.  
  17. _mt_init:
  18. ; !!!!
  19.     push.l    d0-d7/a0-a6
  20.     move.l    _adr_data,a0
  21. ; !!!!
  22.     lea    $3b8(a0),a1
  23.     moveq    #$7f,d0
  24.     moveq    #0,d2
  25.     moveq    #0,d1
  26. mt_lop2:move.b    (a1)+,d1
  27.     cmp.b    d2,d1
  28.     ble.s    mt_lop
  29.     move.l    d1,d2
  30. mt_lop:    dbf    d0,mt_lop2
  31.     addq.b    #1,d2
  32.  
  33.     asl.l    #8,d2
  34.     asl.l    #2,d2
  35.     lea    4(a1,d2.l),a2
  36.     lea    mt_samplestarts(pc),a1
  37.     add.w    #42,a0
  38.     moveq    #$1e,d0
  39. mt_lop3:clr.l    (a2)
  40.     move.l    a2,(a1)+
  41.     moveq    #0,d1
  42.     move.w    (a0),d1
  43.     clr.b    2(a0)
  44.     asl.l    #1,d1
  45.     add.l    d1,a2
  46.     add.l    #$1e,a0
  47.     dbf    d0,mt_lop3
  48.  
  49.     or.b    #2,$bfe001
  50.     move.b    #6,mt_speed
  51.     moveq    #0,d0
  52.     lea    $dff000,a0
  53.     move.w    d0,$a8(a0)
  54.     move.w    d0,$b8(a0)
  55.     move.w    d0,$c8(a0)
  56.     move.w    d0,$d8(a0)
  57.     clr.b    mt_songpos
  58.     clr.b    mt_counter
  59.     clr.w    mt_pattpos
  60. ; !!!!
  61.     pop.l    d0-d7/a0-a6
  62. ; !!!!
  63.     rts
  64.  
  65. _mt_end:    
  66. ; !!!!
  67.     push.l    d0-d7/a0-a6
  68. ; !!!!
  69.     clr.w    $dff0a8
  70.     clr.w    $dff0b8
  71.     clr.w    $dff0c8
  72.     clr.w    $dff0d8
  73.     move.w    #$f,$dff096
  74. ; !!!!
  75.     pop.l    d0-d7/a0-a6
  76.     moveq.l    #0,d0
  77. ; !!!!
  78.     rts
  79.  
  80. ; !!!!
  81. _mt_music:
  82.     push.l    d0-d7/a0-a6
  83.     bsr.s    mt_music2
  84.     pop.l    d0-d7/a0-a6
  85.     rts
  86.  
  87. mt_music2:
  88.  
  89.     move.l    _adr_data,a0
  90.     addq.b    #1,mt_counter
  91.     move.b    mt_counter(pc),d0
  92.     cmp.b    mt_speed(pc),d0
  93.     blt    mt_nonew
  94.     clr.b    mt_counter
  95.  
  96.     move.l    _adr_data,a0
  97.     lea    $c(a0),a3
  98.     lea    $3b8(a0),a2
  99.     lea    $43c(a0),a0
  100.  
  101.     moveq    #0,d0
  102.     moveq    #0,d1
  103.     move.b    mt_songpos(pc),d0
  104.     move.b    (a2,d0.w),d1
  105.     lsl.w    #8,d1
  106.     lsl.w    #2,d1
  107.     add.w    mt_pattpos(pc),d1
  108.     clr.w    mt_dmacon
  109.  
  110.     lea    $dff0a0,a5
  111.     lea    mt_voice1(pc),a4
  112.     bsr    mt_playvoice
  113.     addq.l    #4,d1
  114.     lea    $dff0b0,a5
  115.     lea    mt_voice2(pc),a4
  116.     bsr    mt_playvoice
  117.     addq.l    #4,d1
  118.     lea    $dff0c0,a5
  119.     lea    mt_voice3(pc),a4
  120.     bsr    mt_playvoice
  121.     addq.l    #4,d1
  122.     lea    $dff0d0,a5
  123.     lea    mt_voice4(pc),a4
  124.     bsr    mt_playvoice
  125.  
  126.     bsr    mt_wait
  127.     move.w    mt_dmacon(pc),d0
  128.     or.w    #$8000,d0
  129.     move.w    d0,$dff096
  130.     bsr    mt_wait
  131. mt_nodma:
  132.     lea    mt_voice1(pc),a4
  133.     lea    $dff000,a3
  134.     move.l    $a(a4),$a0(a3)
  135.     move.w    $e(a4),$a4(a3)
  136.     move.w    $12(a4),$a8(a3)
  137.     move.l    $a+$1c(a4),$b0(a3)
  138.     move.w    $e+$1c(a4),$b4(a3)
  139.     move.w    $12+$1c(a4),$b8(a3)
  140.     move.l    $a+$38(a4),$c0(a3)
  141.     move.w    $e+$38(a4),$c4(a3)
  142.     move.w    $12+$38(a4),$c8(a3)
  143.     move.l    $a+$54(a4),$d0(a3)
  144.     move.w    $e+$54(a4),$d4(a3)
  145.     move.w    $12+$54(a4),$d8(a3)
  146.  
  147.     add.w    #$10,mt_pattpos
  148.     cmp.w    #$400,mt_pattpos
  149.     bne.s    mt_exit
  150. mt_next:clr.w    mt_pattpos
  151.     clr.b    mt_break
  152.     move.l    _adr_data,a0
  153.     addq.b    #1,mt_songpos
  154.     and.b    #$7f,mt_songpos
  155.     move.b    $3b6(a0),d0
  156.     cmp.b    mt_songpos(pc),d0
  157.     bne.s    mt_exit
  158.     move.b    $3b7(a0),mt_songpos
  159. mt_exit:tst.b    mt_break
  160.     bne.s    mt_next
  161.     rts
  162.  
  163. mt_wait:moveq    #4,d3        
  164. mt_wai2:move.b    $dff006,d2    
  165. mt_wai3:cmp.b    $dff006,d2    
  166.     beq.s    mt_wai3
  167.     dbf    d3,mt_wai2    
  168.     moveq    #8,d2
  169. mt_wai4:dbf    d2,mt_wai4
  170.  
  171. mt_nonew:
  172.     lea    mt_voice1(pc),a4
  173.     lea    $dff0a0,a5
  174.     bsr    mt_com
  175.     lea    mt_voice2(pc),a4
  176.     lea    $dff0b0,a5
  177.     bsr    mt_com
  178.     lea    mt_voice3(pc),a4
  179.     lea    $dff0c0,a5
  180.     bsr    mt_com
  181.     lea    mt_voice4(pc),a4
  182.     lea    $dff0d0,a5
  183.     bsr    mt_com
  184.     bra.s    mt_exit
  185.  
  186. mt_mulu:
  187.     dc.w    0,$1e,$3c,$5a,$78,$96,$b4,$d2,$f0,$10e,$12c,$14a
  188.     dc.w    $168,$186,$1a4,$1c2,$1e0,$1fe,$21c,$23a,$258,$276
  189.     dc.w    $294,$2b2,$2d0,$2ee,$30c,$32a,$348,$366,$384,$3a2
  190.  
  191. mt_playvoice:
  192.     move.l    (a0,d1.l),(a4)
  193.     moveq    #0,d2
  194.     move.b    2(a4),d2
  195.     lsr.b    #4,d2
  196.     move.b    (a4),d0
  197.     and.b    #$f0,d0
  198.     or.b    d0,d2
  199.     beq.s    mt_oldinstr
  200.  
  201.     lea    mt_samplestarts-4(pc),a1
  202.     asl.w    #2,d2
  203.     move.l    (a1,d2.l),4(a4)
  204.     lsr.w    #1,d2
  205.     move.w    mt_mulu(pc,d2.w),d2
  206.     move.w    (a3,d2.w),8(a4)
  207.     move.w    2(a3,d2.w),$12(a4)
  208.     moveq    #0,d3
  209.     move.w    4(a3,d2.w),d3
  210.     tst.w    d3
  211.     beq.s    mt_noloop
  212.     move.l    4(a4),d0
  213.     asl.w    #1,d3
  214.     add.l    d3,d0
  215.     move.l    d0,$a(a4)
  216.     move.w    4(a3,d2.w),d0
  217.     add.w    6(a3,d2.w),d0
  218.     move.w    d0,8(a4)
  219.     bra.s    mt_hejaSverige
  220. mt_noloop:
  221.     move.l    4(a4),d0
  222.     add.l    d3,d0
  223.     move.l    d0,$a(a4)
  224. mt_hejaSverige:
  225.     move.w    6(a3,d2.w),$e(a4)
  226.  
  227. mt_oldinstr:
  228.     move.w    (a4),d0
  229.     and.w    #$fff,d0
  230.     beq    mt_com2
  231.     tst.w    8(a4)
  232.     beq.s    mt_stopsound
  233.     tst.b    $12(a4)
  234.     bne.s    mt_stopsound
  235.     move.b    2(a4),d0
  236.     and.b    #$f,d0
  237.     cmp.b    #5,d0
  238.     beq.s    mt_setport
  239.     cmp.b    #3,d0
  240.     beq.s    mt_setport
  241.  
  242.     move.w    (a4),$10(a4)
  243.     and.w    #$fff,$10(a4)
  244.     move.w    $1a(a4),$dff096
  245.     clr.b    $19(a4)
  246.  
  247.     move.l    4(a4),(a5)
  248.     move.w    8(a4),4(a5)
  249.     move.w    $10(a4),6(a5)
  250.  
  251.     move.w    $1a(a4),d0
  252.     or.w    d0,mt_dmacon
  253.     bra    mt_com2
  254.  
  255. mt_stopsound:
  256.     move.w    $1a(a4),$dff096
  257.     bra    mt_com2
  258.  
  259. mt_setport:
  260.     move.w    (a4),d2
  261.     and.w    #$fff,d2
  262.     move.w    d2,$16(a4)
  263.     move.w    $10(a4),d0
  264.     clr.b    $14(a4)
  265.     cmp.w    d0,d2
  266.     beq.s    mt_clrport
  267.     bge    mt_com2
  268.     move.b    #1,$14(a4)
  269.     bra    mt_com2
  270. mt_clrport:
  271.     clr.w    $16(a4)
  272.     rts
  273.  
  274. mt_port:move.b    3(a4),d0
  275.     beq.s    mt_port2
  276.     move.b    d0,$15(a4)
  277.     clr.b    3(a4)
  278. mt_port2:
  279.     tst.w    $16(a4)
  280.     beq.s    mt_rts
  281.     moveq    #0,d0
  282.     move.b    $15(a4),d0
  283.     tst.b    $14(a4)
  284.     bne.s    mt_sub
  285.     add.w    d0,$10(a4)
  286.     move.w    $16(a4),d0
  287.     cmp.w    $10(a4),d0
  288.     bgt.s    mt_portok
  289.     move.w    $16(a4),$10(a4)
  290.     clr.w    $16(a4)
  291. mt_portok:
  292.     move.w    $10(a4),6(a5)
  293. mt_rts:    rts
  294.  
  295. mt_sub:    sub.w    d0,$10(a4)
  296.     move.w    $16(a4),d0
  297.     cmp.w    $10(a4),d0
  298.     blt.s    mt_portok
  299.     move.w    $16(a4),$10(a4)
  300.     clr.w    $16(a4)
  301.     move.w    $10(a4),6(a5)
  302.     rts
  303.  
  304. mt_sin:
  305.     dc.b    0,$18,$31,$4a,$61,$78,$8d,$a1,$b4,$c5,$d4,$e0,$eb,$f4
  306.     dc.b    $fa,$fd
  307.     dc.b    $ff,$fd,$fa,$f4,$eb,$e0,$d4,$c5,$b4,$a1,$8d,$78,$61
  308.     dc.b    $4a,$31,$18
  309.  
  310. mt_vib:    move.b    $3(a4),d0
  311.     beq.s    mt_vib2
  312.     move.b    d0,$18(a4)
  313.  
  314. mt_vib2:move.b    $19(a4),d0
  315.     lsr.w    #2,d0
  316.     and.w    #$1f,d0
  317.     moveq    #0,d2
  318.     move.b    mt_sin(pc,d0.w),d2
  319.     move.b    $18(a4),d0
  320.     and.w    #$f,d0
  321.     mulu    d0,d2
  322.     lsr.w    #7,d2
  323.     move.w    $10(a4),d0
  324.     tst.b    $19(a4)
  325.     bmi.s    mt_vibsub
  326.     add.w    d2,d0
  327.     bra.s    mt_vib3
  328. mt_vibsub:
  329.     sub.w    d2,d0
  330. mt_vib3:move.w    d0,6(a5)
  331.     move.b    $18(a4),d0
  332.     lsr.w    #2,d0
  333.     and.w    #$3c,d0
  334.     add.b    d0,$19(a4)
  335.     rts
  336.  
  337. mt_arplist:
  338.     dc.b    0,1,2,0,1,2,0,1,2,0,1,2,0
  339.     dc.b    1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  340.  
  341. mt_arp:    moveq    #0,d0
  342.     move.b    mt_counter(pc),d0
  343.     move.b    mt_arplist(pc,d0.w),d0
  344.     beq.s    mt_arp0
  345.     cmp.b    #2,d0
  346.     beq.s    mt_arp2
  347. mt_arp1:moveq    #0,d0
  348.     move.b    3(a4),d0
  349.     lsr.b    #4,d0
  350.     bra.s    mt_arpdo
  351. mt_arp2:moveq    #0,d0
  352.     move.b    3(a4),d0
  353.     and.b    #$f,d0
  354. mt_arpdo:
  355.     asl.w    #1,d0
  356.     move.w    $10(a4),d1
  357.     and.w    #$fff,d1
  358.     lea    mt_periods(pc),a0
  359.     moveq    #$24,d2
  360. mt_arp3:cmp.w    (a0)+,d1
  361.     bge.s    mt_arpfound
  362.     dbf    d2,mt_arp3
  363. mt_arp0:move.w    $10(a4),6(a5)
  364.     rts
  365. mt_arpfound:
  366.     move.w    -2(a0,d0.w),6(a5)
  367.     rts
  368.  
  369. mt_normper:
  370.     move.w    $10(a4),6(a5)
  371.     rts
  372.  
  373. mt_com:    move.w    2(a4),d0
  374.     and.w    #$fff,d0
  375.     beq.s    mt_normper
  376.     move.b    2(a4),d0
  377.     and.b    #$f,d0
  378.     tst.b    d0
  379.     beq.s    mt_arp
  380.     cmp.b    #1,d0
  381.     beq.s    mt_portup
  382.     cmp.b    #2,d0
  383.     beq.s    mt_portdown
  384.     cmp.b    #3,d0
  385.     beq    mt_port
  386.     cmp.b    #4,d0
  387.     beq    mt_vib
  388.     cmp.b    #5,d0
  389.     beq.s    mt_volport
  390.     cmp.b    #6,d0
  391.     beq.s    mt_volvib
  392.     move.w    $10(a4),6(a5)
  393.     cmp.b    #$a,d0
  394.     beq.s    mt_volslide
  395.     rts
  396.  
  397. mt_portup:
  398.     moveq    #0,d0
  399.     move.b    3(a4),d0
  400.     sub.w    d0,$10(a4)
  401.     move.w    $10(a4),d0
  402.     cmp.w    #$71,d0
  403.     bpl.s    mt_portup2
  404.     move.w    #$71,$10(a4)
  405. mt_portup2:
  406.     move.w    $10(a4),6(a5)
  407.     rts
  408.  
  409. mt_portdown:
  410.     moveq    #0,d0
  411.     move.b    3(a4),d0
  412.     add.w    d0,$10(a4)
  413.     move.w    $10(a4),d0
  414.     cmp.w    #$358,d0
  415.     bmi.s    mt_portdown2
  416.     move.w    #$358,$10(a4)
  417. mt_portdown2:
  418.     move.w    $10(a4),6(a5)
  419.     rts
  420.  
  421. mt_volvib:
  422.      bsr    mt_vib2
  423.      bra.s    mt_volslide
  424. mt_volport:
  425.      bsr    mt_port2
  426.  
  427. mt_volslide:
  428.     moveq    #0,d0
  429.     move.b    3(a4),d0
  430.     lsr.b    #4,d0
  431.     beq.s    mt_vol3
  432.     add.b    d0,$13(a4)
  433.     cmp.b    #$40,$13(a4)
  434.     bmi.s    mt_vol2
  435.     move.b    #$40,$13(a4)
  436. mt_vol2:moveq    #0,d0
  437.     move.b    $13(a4),d0
  438.     move.w    d0,8(a5)
  439.     rts
  440.  
  441. mt_vol3:move.b    3(a4),d0
  442.     and.b    #$f,d0
  443.     sub.b    d0,$13(a4)
  444.     bpl.s    mt_vol4
  445.     clr.b    $13(a4)
  446. mt_vol4:moveq    #0,d0
  447.     move.b    $13(a4),d0
  448.     move.w    d0,8(a5)
  449.     rts
  450.  
  451. mt_com2:move.b    $2(a4),d0
  452.     and.b    #$f,d0
  453.     cmp.b    #$e,d0
  454.     beq.s    mt_filter
  455.     cmp.b    #$d,d0
  456.     beq.s    mt_pattbreak
  457.     cmp.b    #$b,d0
  458.     beq.s    mt_songjmp
  459.     cmp.b    #$c,d0
  460.     beq.s    mt_setvol
  461.     cmp.b    #$f,d0
  462.     beq.s    mt_setspeed
  463.     rts
  464.  
  465. mt_filter:
  466.     move.b    3(a4),d0
  467.     and.b    #1,d0
  468.     asl.b    #1,d0
  469.     and.b    #$fd,$bfe001
  470.     or.b    d0,$bfe001
  471.     rts
  472.  
  473. mt_pattbreak:
  474.     move.b    #1,mt_break
  475.     rts
  476.  
  477. mt_songjmp:
  478.     move.b    #1,mt_break
  479.     move.b    3(a4),d0
  480.     subq.b    #1,d0
  481.     move.b    d0,mt_songpos
  482.     rts
  483.  
  484. mt_setvol:
  485.     cmp.b    #$40,3(a4)
  486.     bls.s    mt_sv2
  487.     move.b    #$40,3(a4)
  488. mt_sv2:    moveq    #0,d0
  489.     move.b    3(a4),d0
  490.     move.b    d0,$13(a4)
  491.     move.w    d0,8(a5)
  492.     rts
  493.  
  494. mt_setspeed:
  495.     moveq    #0,d0
  496.     move.b    3(a4),d0
  497.     cmp.b    #$1f,d0
  498.     bls.s    mt_sp2
  499.     moveq    #$1f,d0
  500. mt_sp2:    tst.w    d0
  501.     bne.s    mt_sp3
  502.     moveq    #1,d0
  503. mt_sp3:    move.b    d0,mt_speed
  504.     rts
  505.  
  506. mt_periods:
  507.     dc.w    $358,$328,$2fa,$2d0,$2a6,$280,$25c,$23a,$21a,$1fc,$1e0
  508.     dc.w    $1c5,$1ac,$194,$17d,$168,$153,$140,$12e,$11d,$10d,$fe
  509.     dc.w    $f0,$e2,$d6,$ca,$be,$b4,$aa,$a0,$97,$8f,$87
  510.     dc.w    $7f,$78,$71,0
  511.  
  512. mt_speed:    dc.b    6
  513. mt_counter:    dc.b    0
  514. mt_pattpos:    dc.w    0
  515. mt_songpos:    dc.b    0
  516. mt_break:    dc.b    0
  517. mt_dmacon:    dc.w    0
  518. mt_samplestarts:dcb.l    $1f,0
  519. mt_voice1:    dcb.w    13,0
  520.         dc.w    1
  521. mt_voice2:    dcb.w    13,0
  522.         dc.w    2
  523. mt_voice3:    dcb.w    13,0
  524.         dc.w    4
  525. mt_voice4:    dcb.w    13,0
  526.         dc.w    8
  527.  
  528.